//package org.virtualdb.mpp.test;
//
//import java.util.Arrays;
//import java.util.Collection;
//import java.util.Collections;
//import java.util.LinkedList;
//
//import org.opencloudb.mpp.OrderCol;
//import org.opencloudb.mpp.RowDataPacketSorter;
//import org.opencloudb.net.mysql.RowDataPacket;
//
///**
// * RowDataSorter
// * 
// * @author czp:2014年12月8日
// *
// */
//public class FastRowDataSorter extends RowDataPacketSorter {
//
//    private int n;
//    private int tmp;
//    private boolean isDesc;
//    private RowDataCmp cmp;
//    private RowDataPacket[] res;
//    protected OrderCol[] orderCols;
//
//    public FastRowDataSorter(OrderCol[] orderCols, int limitSize) {
//        super(orderCols);
//        this.n = limitSize;
//        this.tmp = limitSize - 1;
//        this.orderCols = orderCols;
//        this.cmp = new RowDataCmp(orderCols);
//        this.res = new RowDataPacket[limitSize];
//        if (orderCols != null && orderCols.length > 0)
//            isDesc = orderCols[0].orderType == OrderCol.COL_ORDER_TYPE_DESC;
//    }
//
//    public void addRow(RowDataPacket row) {
//        if (n >= 0) {
//            res[--n] = row;
//            if (n == 0) {
//                Arrays.sort(res, cmp);
//                n--;
//            }
//            return;
//        }
//        if (isDesc) {
//            if (cmp.compare(row, res[0]) > 0) {
//                res[0] = row;
//                Arrays.sort(res, cmp);
//            }
//            return;
//        }
//        int k = tmp;
//        if (cmp.compare(row, res[k]) > 0) {
//            res[k] = row;
//            Arrays.sort(res, cmp);
//        }
//
//    }
//    
//
//    public Collection<RowDataPacket> getSortedResult() {
//        LinkedList<RowDataPacket> ls = new LinkedList<RowDataPacket>();
//        Collections.addAll(ls, res);
//        return ls;
//    }
//
//}
